5.03. Основы языка
Как работает Java?
Основы языка
★ Java – один из самых знаменитых объектно-ориентированных языков программирования, разработанный компанией Sun Microsystems, а нынче принадлежащий корпорации Oracle.
После изучения этой главы обязательно почитайте документацию Java, через официальный сайт - https://docs.oracle.com/en/java/, а также OpenJDK - https://openjdk.org/. Может пригодится также https://metanit.com/java и рубрика Java на Хабре.
Чит-лист - https://cheatsheets.zip/java
Программы на Java транслируются в байт-код Java, выполняемый виртуальной машиной Java – JVM. Таким образом, процесс в Java таков:
- Исходный код пишется программистом и сохраняется в формате .java;
- Исходный код (.java) компилируется в байт-код (.class) с помощью javac;
- JVM запускает байт-код и интерпретирует его построчно.
- JIT-компиляция - часто используемые части кода компилируются в машинный код.
- Процессор выполняет машинный код.
Упакованный исполняемый файл генерируется в формате .jar. Он включает в себя .class и ресурсы.

Какие возможности предоставляет Java?
- писать программы, которые могут работать автономно, без необходимости переписывать логику под разные платформы;
- создание игр, движков, IDE, утилит, билд-систем и других технически сложных продуктов;
- строить сервисы, обрабатывающие тысячи запросов в секунду, такие как онлайн-магазины, платежные шлюзы, транспортные системы;
- разрабатывать ERP, CRM, HRM, банковские системы, где важна надёжность и долгосрочная поддержка;
- реализации бизнес-логики, алгоритмов обработки данных, аналитики, правил, проверок и других процессов, требующих точности и структуры;
- обрабатывать большие объёмы информации благодаря оптимизациям JVM и богатым коллекциям;
- создавать защищённые окружения для выполнения кода, особенно важное свойство в корпоративных и облачных системах;
- выполнять несколько задач одновременно, используя все доступные ресурсы процессора;
- взаимодействовать с базами данных, файлами, сетью, API, датчиками, внешними библиотеками;
- разделение кода на модули, библиотеки, фреймворки, что позволяет строить сложные архитектуры с чёткими границами ответственности;
- находить ошибки ещё на этапе компиляции, повышая надёжность и предсказуемость кода;
- автоматическое освобождение памяти, что снижает риск утечек и ошибок управления ресурсами.
★ Основные компоненты Java:
- JDK (Java Development Kit) – набор инструментов для разработки (компилятор, JVM, библиотеки);
- JRE (Java Runtime Environment) – набор инструментов для запуска программ (JVM + стандартные библиотеки);
- JVM (Java Virtual Machine) – виртуальная машина, выполняющая байт-код.
- javac – компилятор, который превращает .java в .class.
★ Синтаксис Java отличается явным объявлением типов, а сам язык является объектно-ориентированным (углубимся позднее). Основные черты синтаксиса:
| Особенность | Пример |
|---|---|
| Объявление переменной | int age = 25; |
| Метод | public void greet() { System.out.println("Hello"); } |
| Условия | if (age > 18) { ... } |
| Циклы | for (int i = 0; i < 5; i++) { ... } |
| Классы и объекты | class Person { }, Person p = new Person(); |
| Интерфейсы | interface Runnable { void run(); } |
| Обобщения | List<String> names = new ArrayList<>(); |
Каждая программа на Java состоит из классов и методов. Минимальная программа на Java должна иметь один класс и метод main. Java требует, чтобы каждая программа была внутри класса. Имя файла должно совпадать с именем публичного класса.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Привет, мир!");
}
}
★ Метод main – точка входа в любую программу Java. Именно с него начинается выполнение программы.
Синтаксис:
public static void main(String[] args) {
// код программы
}
Как можно заметить, у метода main есть ряд ключевых слов:
public– метод доступен извне;static– метод может быть вызван без создания объекта;void– не возвращает значение;String[] args– параметры командной строки.
★ Фреймворки в Java – готовые архитектурные решения, которые упрощают разработку приложений. В Java существуют множество популярных фреймворков для разных задач:
| Название | Назначение |
|---|---|
| Spring | Полный набор решений для enterprise-приложений (Spring Boot, Spring MVC, Spring Security, Spring Data и др.) |
| Hibernate / JPA | ORM (объектно-реляционное отображение), работа с БД |
| Vaadin / JavaFX | Разработка GUI-приложений |
| Apache Struts / Play Framework | Web-разработка |
| Micronaut / Quarkus | Легковесные фреймворки для микросервисов и облачных приложений |
| JUnit / TestNG | Юнит-тестирование |
| Jakarta EE / Jakarta EE 9+ | Платформа для корпоративной разработки (ранее Java EE) |
★ Инструменты в Java – специальные средства для разработки, сборки, тестирования и деплоя (развёртывания):
| Инструмент | Назначение |
|---|---|
| JDK (Java Development Kit) | Комплект разработчика, включающий компилятор, JVM, библиотеки |
| JRE (Java Runtime Environment) | Среда выполнения, содержит JVM и стандартные библиотеки |
| JVM (Java Virtual Machine) | Виртуальная машина, которая выполняет Java-байткод |
| IDE (IntelliJ IDEA, Eclipse, NetBeans) | Интегрированные среды разработки |
| Maven / Gradle | Системы управления зависимостями и сборки проекта |
| JUnit / Mockito | Инструменты для тестирования |
| SonarQube | Анализ качества кода |
| Docker / Kubernetes | Контейнеризация и оркестрация микросервисов |
| Tomcat / Jetty / WildFly | Серверы приложений для запуска Java-веб-приложений |
★ Библиотеки в Java – преднастроенные модули, расширяющие функциональность Java. Они могут быть частью JDK или сторонними.
Стандартные библиотеки (входят в JDK):
| Группа | Что включает |
|---|---|
| java.lang | Базовые классы (Object, String, Math) |
| java.util | Коллекции (List, Map, Set), даты, генератор случайных чисел |
| java.io / java.nio | Работа с файлами и потоками |
| java.net | Работа с сетью |
| java.time | Новые даты и время (с Java 8+) |
| javax.swing / java.awt | Графические интерфейсы |
| java.sql | Работа с базами данных через JDBC |
Примеры сторонних библиотек:
| Название | Назначение |
|---|---|
| Apache Commons | Утилиты для работы со строками, коллекциями, IO и др. |
| Guava (Google) | Расширения стандартных возможностей |
| Jackson / Gson | Работа с JSON |
| Log4j / SLF4J | Логирование |
| Lombok | Автоматизация геттеров, сеттеров, конструкторов |
| OkHttp / Retrofit | HTTP-запросы |
| RxJava | Реактивное программирование |
| Joda-Time | Альтернатива java.util.Date (до Java 8) |
★ Сфера применения
Java – универсальный язык, и применяется во множестве областей:
| Сфера | Примеры |
|---|---|
| Backend-разработка | Серверные приложения, REST API, микросервисы |
| Android-разработка | Приложения для мобильных устройств |
| Web-приложения | Сервлеты, JSP, JSF, Spring MVC |
| Корпоративные системы (Enterprise) | Банки, страховые компании, ERP-системы |
| Big Data & Analytics | Apache Hadoop, Spark, Flink |
| Научные вычисления и моделирование | Распределённые вычисления, численные методы |
| Игры | Minecraft |
| IoT (Интернет вещей) | Устройства с ограниченными ресурсами, управление датчиками |
| Облачные сервисы | AWS, Google Cloud, Azure поддерживают Java-сервисы |
Учитывая, что Java при появлении сразу сделал акцент на безопасности, за него сразу «ухватился» почти весь финансовый сектор, и поэтому в серьёзных организациях, в том числе сфере финтеха, можно встретить многолетние тонны кода на Java.